package com.jsbs.iam.auth.service;

import com.github.pagehelper.PageInfo;
import com.jsbs.iam.auth.dto.IamDynamicUserGroupAddDto;
import com.jsbs.iam.auth.dto.IamDynamicUserGroupEditDto;
import com.jsbs.iam.auth.dto.IamOrgInfoQueryDto;
import com.jsbs.iam.auth.param.IamQueryDynamicUserGroupBeforeParam;
import com.jsbs.iam.auth.param.IamQueryDynamicUserGroupUsersParam;
import com.jsbs.iam.auth.param.IamQueryStaticUserGroupParam;
import com.jsbs.iam.auth.vo.IamDynamicUserGroupVo;
import com.jsbs.iam.auth.vo.IamUserGroupVo;
import com.jsbs.iam.auth.vo.IamUserInfoVo;
import com.jsbs.iam.auth.vo.OrgThreeInfoVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName: DynamicUserGroupManagerService
 * @Author: tenghuawei
 * @Date: 2023/1/6 10:31
 * @Description:
 */

public interface IamDynamicUserGroupManagerService {

    /**
     * 功能描述：新增动态用户组
     * @param iamDynamicUserGroupAddDto
     * @return Result
     */
    void createDynamicUserGroup (IamDynamicUserGroupAddDto iamDynamicUserGroupAddDto);

    /**
     * 功能描述：查询动态用户组
     * @param iamQueryStaticUserGroupParam
     * @return PageInfo
     */
    PageInfo<IamUserGroupVo> queryDynamicUserGroup(IamQueryStaticUserGroupParam iamQueryStaticUserGroupParam);

    /**
     * 功能描述：编辑动态用户组时，查询展示之前的数据-
     * @param iamQueryDynamicUserGroupBeforeParam
     * @return IamDynamicUserGroupVo
     */
    IamDynamicUserGroupVo queryDynamicUserGroupEditBefore(@Param("iamQueryDynamicUserGroupBeforeParam") IamQueryDynamicUserGroupBeforeParam iamQueryDynamicUserGroupBeforeParam);

    /**
     * 功能描述：编辑动态用户组
     * @param iamDynamicUserGroupEditDto
     * @return int
     */
    void userGroupEdit(IamDynamicUserGroupEditDto iamDynamicUserGroupEditDto);

//    /**
//     * 功能描述：删除动态用户组
//     * @param iamStaticUserGroupDeleteParam
//     * @return
//     */
//    void userGroupDelete(IamStaticUserGroupDeleteParam iamStaticUserGroupDeleteParam);

    /**
     * 功能描述：获取某组织类型下的组织树
     * @param iamOrgInfoQueryDto
     * @return Result
     */
    List<OrgThreeInfoVo> getOrgTypeInfo (IamOrgInfoQueryDto iamOrgInfoQueryDto);

    /**
     * 功能描述：查询动态用户组下的用户（分页展示）
     * @param iamQueryDynamicUserGroupUsersParam
     * @return List
     */
    PageInfo<IamUserInfoVo> queryDynamicUserGroupUserInfo(IamQueryDynamicUserGroupUsersParam iamQueryDynamicUserGroupUsersParam);




}
